]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspace: Disable overlay for inactive workspaces too
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 5 Feb 2021 16:39:13 +0000 (13:39 -0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 11 Feb 2021 17:21:48 +0000 (17:21 +0000)
In addition to disabling the overlay when the state is not 1,
disable it also when not in the active workspace.

Make the Workspace class track the workspace's active state,
and resync the overlays when it changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1645>

js/ui/workspace.js

index b8893357a027221d55cc7728523b2f384dd0d475..5e3213e4a367039ac45ea6705a89cfd3514f3db5 100644 (file)
@@ -406,6 +406,7 @@ var WorkspaceLayout = GObject.registerClass({
         this._spacing = 20;
         this._layoutFrozen = false;
 
+        this._metaWorkspace = metaWorkspace;
         this._monitorIndex = monitorIndex;
         this._workarea = metaWorkspace
             ? metaWorkspace.get_work_area_for_monitor(this._monitorIndex)
@@ -426,8 +427,7 @@ var WorkspaceLayout = GObject.registerClass({
         });
 
         this._stateAdjustment.connect('notify::value', () => {
-            [...this._windows.keys()].forEach(
-                preview => this._syncOverlay(preview));
+            this.syncOverlays();
             this.layout_changed();
         });
     }
@@ -697,7 +697,17 @@ var WorkspaceLayout = GObject.registerClass({
     }
 
     _syncOverlay(preview) {
-        preview.overlay_enabled = this._stateAdjustment.value === 1;
+        const active = this._metaWorkspace?.active ?? true;
+        preview.overlayEnabled = active && this._stateAdjustment.value === 1;
+    }
+
+    /**
+     * syncOverlays:
+     *
+     * Synchronizes the overlay state of all window previews.
+     */
+    syncOverlays() {
+        [...this._windows.keys()].forEach(preview => this._syncOverlay(preview));
     }
 
     /**
@@ -942,6 +952,10 @@ class Workspace extends St.Widget {
         });
 
         this.metaWorkspace = metaWorkspace;
+        this._activeWorkspaceChangedId =
+            this.metaWorkspace?.connect('notify::active', () => {
+                this.layoutManager.syncOverlays();
+            });
 
         this._overviewAdjustment = overviewAdjustment;
         this.monitorIndex = monitorIndex;
@@ -1188,6 +1202,7 @@ class Workspace extends St.Widget {
         if (this.metaWorkspace) {
             this.metaWorkspace.disconnect(this._windowAddedId);
             this.metaWorkspace.disconnect(this._windowRemovedId);
+            this.metaWorkspace.disconnect(this._activeWorkspaceChangedId);
         }
         global.display.disconnect(this._windowEnteredMonitorId);
         global.display.disconnect(this._windowLeftMonitorId);